package com.ruoyi.mapper;

import com.ruoyi.domain.BasisGroundEnvironment;
import com.ruoyi.domain.BasisPosition;
import com.ruoyi.domain.BasisUav;
import com.ruoyi.dto.BasisLoadingPositionCamp;
import com.ruoyi.dto.BasisLoadingPositionWeather;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 阵地数据管理Mapper接口
 * 
 * @author ruoyi
 * @date 2025-05-23
 */
public interface BasisPositionMapper 
{
    /**
     * 查询阵地数据管理
     * 
     * @param id 阵地数据管理主键
     * @return 阵地数据管理
     */
    public BasisPosition selectBasisPositionById(Long id);

    public BasisPosition selectBasisPositionByUserID (@Param("loadingId") String loadingId, @Param("userid") Long userid);


    /**
     * 查询阵地数据管理列表
     * 
     * @param basisPosition 阵地数据管理
     * @return 阵地数据管理集合
     */
    public List<BasisPosition> selectBasisPositionList(BasisPosition basisPosition);

    /**
     * 新增阵地数据管理
     * 
     * @param basisPosition 阵地数据管理
     * @return 结果
     */
    public int insertBasisPosition(BasisPosition basisPosition);

    /**
     * 修改阵地数据管理
     * 
     * @param basisPosition 阵地数据管理
     * @return 结果
     */
    public int updateBasisPosition(BasisPosition basisPosition);

    /**
     * 删除阵地数据管理
     * 
     * @param id 阵地数据管理主键
     * @return 结果
     */
    public int deleteBasisPositionById(Long id);

    /**
     * 批量删除阵地数据管理
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBasisPositionByIds(Long[] ids);


    //添加阵地和阵营和案例的关联表
    boolean addBasisLoadingPositionCamp(BasisLoadingPositionCamp basisLoadingPositionCamp);

    boolean updateBasisLoadingPositionCamp(BasisLoadingPositionCamp basisLoadingPositionCamp);

    boolean delBasisLoadingPositionCamp(@Param("loadingId") String loadingId, @Param("positionId") Integer positionId);


    Map<String,Object> findByBasisLoadingPositionCamp(@Param("loadingId") String loadingId, @Param("positionId") Integer positionId);


    public List<BasisPosition> findByLoadingIdAndCampId(@Param("loadingId") String loadingId, @Param("campId") String campId);

    public List<BasisPosition> findByLoadingIdAndCampIdFormUser(@Param("loadingId") String loadingId, @Param("userId") String userId,@Param("campId") String campId);
//    public boolean configPositionAndWeather(BasisLoadingPositionWeather basisLoadingPositionWeather);


    //删除阵地关联的人员和设备
    boolean delBasisPositionEquipmentUser(@Param("loadingId") String loadingId, @Param("positionId") Integer positionId);



    //删除阵地关联的人员
    boolean delBasisPositionUser(@Param("loadingId") String loadingId, @Param("positionId") Integer positionId);



    //根据案例id查询 没有跟当前案例相关联的阵地
    public List<BasisPosition> selectBasisPositionFormLoadingId(@Param("loadingId") String loadingId);


    //根据uuid查询阵地
    BasisPosition getByUuid(String uuid);

    public List<BasisPosition> selectByLoadingIdAnduserIdFromPosition(@Param("loadingId") String loadingId,@Param("userId") Long userId);

    BasisPosition findbyId(@Param("id")String id);
}
